home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
BCPG10.ZIP
/
PAGE.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1994-09-08
|
9KB
|
608 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Boolean BOOLEAN006
Boolean BOOLEAN007
Boolean BOOLEAN008
Boolean BOOLEAN009
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
Integer INTEGER015
Integer INTEGER016
String TSTRING001(20)
String TSTRING002(20)
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String STRING028
String TSTRING029(1)
String STRING030
String STRING031
String STRING032
String STRING033
String STRING034
String STRING035
String STRING036
String STRING037
String STRING038
String STRING039
String STRING040
Time TIME001
Time TIME002
Time TIME003
Time TIME004
Time TIME005
Time TIME006
Int INT001
Int INT002
Int INT003
Int INT004
Int INT005
Int TINT006(20)
Int TINT007(20)
Int INT008
Int INT009
Int INT010
Int INT011
BigStr BIGSTR001
;------------------------------------------------------------------------------
INT004 = 1
Goto LABEL004
:LABEL001
DefColor
Print STRING005
INT008 = GetX()
INT009 = GetY()
For INT005 = 1 To INT002
TINT006(INT005) = GetX()
TINT007(INT005) = GetY()
Print TSTRING001(INT005)
If (INT001 == 1) Then
If (INT005 == INT002) Then
Print STRING007
Else
Print STRING006
Endif
Else
AnsiPos INT008, GetY() + 1
Endif
TSTRING002(INT005) = Left(Strip(StripAtx(TSTRING001(INT005)), " "), 1)
Next
INT003 = INT004
Gosub LABEL003
Print STRING003, StripAtx(TSTRING001(INT003))
:LABEL002
STRING004 = Inkey()
Select Case (STRING004)
Case Chr(13)
DefColor
Return
Case "RIGHT", "DOWN", "."
Gosub LABEL003
Print TSTRING001(INT003)
If (INT003 == INT002) Then
INT003 = 1
Else
Inc INT003
Endif
Gosub LABEL003
Print STRING003, StripAtx(TSTRING001(INT003))
Case "LEFT", "UP", ","
Gosub LABEL003
Print TSTRING001(INT003)
If (INT003 == 1) Then
INT003 = INT002
Else
Dec INT003
Endif
Gosub LABEL003
Print STRING003, StripAtx(TSTRING001(INT003))
Case "END"
Gosub LABEL003
Print TSTRING001(INT003)
INT003 = INT002
Gosub LABEL003
Print STRING003, StripAtx(TSTRING001(INT003))
Case "HOME"
Gosub LABEL003
Print TSTRING001(INT003)
INT003 = 1
Gosub LABEL003
Print STRING003, StripAtx(TSTRING001(INT003))
Case ""
For INT005 = 1 To INT002
If (Upper(STRING004) == Upper(TSTRING002(INT005))) Then
Gosub LABEL003
Print TSTRING001(INT003)
INT003 = INT005
Gosub LABEL003
Print STRING003, StripAtx(TSTRING001(INT003))
KbdStuff Chr(13)
Endif
Next
End Select
Goto LABEL002
:LABEL003
INT010 = GetX()
If (INT010 > TINT006(INT003)) Then
Backup INT010 - TINT006(INT003)
ElseIf (INT010 < TINT006(INT003)) Then
Forward TINT006(INT003) - INT010
Endif
Return
:LABEL004
STRING008 = Chr(8)
BOOLEAN003 = 0
STRING009 = PPEPath() + "graph\pgsys"
STRING028 = PPEPath() + "page.cfg"
STRING030 = ReadLine(STRING028, 5)
If (Upper(ReadLine(STRING028, 8)) == "YES") BOOLEAN002 = 1
Tokenize STRING030
INTEGER009 = TokCount()
Redim TSTRING029, INTEGER009
For INTEGER010 = 1 To INTEGER009
STRING021 = GetToken()
If (STRING021 == "") Break
TSTRING029(INTEGER010) = STRING021
Next
STRING031 = PPEPath() + "cfg\pgmenus.cfg"
Tokenize ReadLine(STRING031, 1)
INTEGER012 = GetToken()
INTEGER015 = GetToken()
INTEGER011 = Random(Time())
INTEGER011 = Random(INTEGER012 - 1) + 1
Tokenize ReadLine(STRING031, 1 + INTEGER011)
INTEGER013 = GetToken()
INTEGER014 = GetToken()
STRING010 = TokenStr()
GetUser
BOOLEAN008 = 1
BOOLEAN004 = 1
STRING035 = PPEPath() + "graph\pgtext"
STRING034 = PPEPath() + "work\mxlog." + String(PcbNode())
INTEGER006 = ReadLine(STRING028, 1)
If (Upper(ReadLine(STRING028, 2)) == "YES") Then
BOOLEAN006 = 1
Else
BOOLEAN006 = 0
Endif
STRING037 = PPEPath() + "mx.cfg"
If (BOOLEAN006) Then
If (LoggedOn()) Goto LABEL005
If (Exist(STRING037)) Then
If (Upper(ReadLine(STRING037, 3)) == "YES") Then
FAppend 3, STRING034, 1, 0
Goto LABEL005
Endif
BOOLEAN006 = 0
Endif
Endif
:LABEL005
STRING023 = ReadLine(STRING028, 3)
If (Upper(ReadLine(STRING028, 4)) == "YES") Then
BOOLEAN007 = 0
Else
BOOLEAN007 = 1
Endif
If (BOOLEAN006) Then
STRING036 = "Page started at " + String(Time())
Gosub LABEL017
Endif
If (LangExt() <> "") Then
If (Exist(STRING035 + LangExt())) Then
STRING035 = STRING035 + LangExt()
Endif
Endif
STRING022 = ReadLine(STRING035, 1)
STRING013 = ReadLine(STRING035, 2)
STRING014 = ReadLine(STRING035, 3)
TIME001 = Time()
TIME002 = ReadLine(PCBDat(), 189)
TIME003 = ReadLine(PCBDat(), 190)
STRING026 = FileInf(PCBDat(), 7) + "pcboard.sys"
FOpen 1, STRING026, 0, 0
FSeek 1, 4, 0
FRead 1, STRING025, 2
FClose 1
INTEGER007 = STRING025
Select Case (INTEGER007)
Case 0
BOOLEAN005 = 0
Case -1
BOOLEAN005 = 1
Case Else
PrintLn "ERROR: cannot determine page bell status, defaulting to true"
BOOLEAN005 = 1
Wait
End Select
STRING015 = Chr(7)
STRING016 = Chr(13)
STRING017 = Chr(27)
STRING018 = Chr(27) + "["
STRING019 = STRING018 + "0;0H"
STRING020 = STRING018 + "K"
DefColor
Cls
If (BOOLEAN005) Then
If (BOOLEAN002) Then
Gosub LABEL020
If (BOOLEAN009) Goto LABEL006
If (BOOLEAN009) Then
Endif
If (((TIME002 > TIME003) && !((TIME001 > TIME003) && (TIME001 < TIME002))) || ((TIME003 > TIME002) && ((TIME001 >= TIME002) && (TIME001 <= TIME003)))) Then
:LABEL006
DispFile PPEPath() + "graph\page" + String(INTEGER011), 1 + 4
Tokenize STRING010
INTEGER001 = GetToken()
INTEGER002 = GetToken()
STRING032 = GetToken()
If (LoggedOn()) Goto LABEL007
STRING027 = ""
AnsiPos INTEGER001, INTEGER002
InputText STRING032 + "_", STRING027, 1, 60
If (STRING027 == "") Return
Newline
Goto LABEL008
:LABEL007
STRING027 = Upper(U_Name())
AnsiPos INTEGER001, INTEGER002
Print STRING032, STRING027
:LABEL008
INTEGER001 = GetToken()
INTEGER002 = GetToken()
STRING032 = GetToken()
STRING033 = ""
AnsiPos INTEGER001, INTEGER002
InputText STRING032 + "_", STRING033, 1, 60
If (STRING033 == "") Return
If (BOOLEAN006) Then
STRING036 = "Page reason (" + Upper(STRING033) + ")"
If (!LoggedOn()) STRING036 = STRING036 + " and username (" + Upper(STRING027) + ")"
STRING036 = STRING036 + " entered"
Gosub LABEL017
Endif
AnsiPos INTEGER013, INTEGER014
PrintLn ReplaceStr(STRING014, "%OPTEXT%", String(INTEGER006))
Gosub LABEL015
For INTEGER010 = 1 To INTEGER006
Gosub LABEL016
STRING012 = KInkey()
If (STRING012 == " ") Then
STRING011 = ""
Gosub LABEL015
Chat
PageOff
If (BOOLEAN006) Then
STRING036 = "Page ended normally, exiting at " + String(Time())
Gosub LABEL017
Endif
End
Goto LABEL009
Endif
If (STRING012 == Chr(9)) Then
BOOLEAN001 = 1
Goto LABEL009
Endif
If (STRING012 == STRING017) Then
INTEGER010 = INTEGER006 + 1
Endif
:LABEL009
If (Abort()) INTEGER010 = INTEGER006 + 1
Next
PageOn
STRING011 = ""
Gosub LABEL015
If (Abort()) Then
ResetDisp
Newline
If (BOOLEAN006) Then
STRING036 = "Page was aborted by user at " + String(Time())
Gosub LABEL017
Endif
End
Goto LABEL010
Endif
Newline
Endif
Endif
Endif
:LABEL010
INTEGER016 = Random(Time())
INTEGER016 = Random(INTEGER015 - 1) + 1
If ((Upper(ReadLine(STRING028, 6)) == "YES") && !BOOLEAN003) Then
BOOLEAN003 = 1
DispFile PPEPath() + "graph\emer" + String(INTEGER016), 1 + 4
FreshLine
Print ReadLine(STRING035, 1)
Gosub LABEL019
If (INT003 == 2) Then
FreshLine
STRING033 = ""
InputStr ReadLine(STRING035, 2) + "_", STRING033, 1, 60, Mask_Ascii(), 8
If (STRING033 == Upper(ReadLine(STRING028, 7))) Then
If (BOOLEAN006) Then
STRING036 = "Correct emergency page password entered, paging"
Gosub LABEL017
Endif
FreshLine
PrintLn ReadLine(STRING035, 4)
Delay 10
Goto LABEL006
Goto LABEL011
Endif
If (BOOLEAN006) Then
STRING036 = "Incorrect emergency page password entered, not paging"
Gosub LABEL017
Endif
FreshLine
PrintLn ReadLine(STRING035, 5)
Delay 10
PageOn
End
:LABEL011
Goto LABEL012
Endif
End
Endif
:LABEL012
DispFile PPEPath() + "graph\pgno" + String(INTEGER016), 1 + 4
Wait
If (BOOLEAN006) Then
If (BOOLEAN005) Goto LABEL013
STRING036 = "Page bell is off"
Goto LABEL014
:LABEL013
STRING036 = "Unsuccesfull page"
:LABEL014
STRING036 = STRING036 + ", exiting page at " + String(Time())
Gosub LABEL017
Endif
PageOn
Return
:LABEL015
INTEGER001 = GetX()
INTEGER002 = GetY()
SPrint STRING019, STRING020
INTEGER003 = 1
While (1) Do
STRING021 = ReadLine(STRING009, INTEGER003)
If (STRING021 == "") Break
SPrintLn STRING021
Inc INTEGER003
EndWhile
SPrint STRING018 + String(INTEGER002) + ";" + String(INTEGER001) + "H"
Return
:LABEL016
Tokenize STRING023
INTEGER004 = GetX()
INTEGER005 = GetY()
STRING024 = GetToken()
INTEGER003 = 1
While (STRING024 <> "") Do
If (INTEGER003 == INTEGER009) Then
AnsiPos INTEGER004, INTEGER005
Print TSTRING029(INTEGER003)
INTEGER003 = 1
Else
AnsiPos INTEGER004, INTEGER005
Print TSTRING029(INTEGER003)
Inc INTEGER003
Endif
INTEGER008 = STRING024
If (!BOOLEAN001) Sound INTEGER008
Delay GetToken()
STRING024 = GetToken()
EndWhile
Return
:LABEL017
If (LoggedOn()) Goto LABEL018
FPutLn 3, " " + STRING036
Return
:LABEL018
Log STRING036, 0
Return
:LABEL019
INT001 = 1
INT002 = 2
TSTRING001(2) = ReadLine(STRING035, 6)
TSTRING001(1) = ReadLine(STRING035, 7)
STRING003 = ReadLine(STRING035, 8)
STRING005 = ReadLine(STRING035, 9)
STRING006 = ReadLine(STRING035, 10)
STRING007 = ReadLine(STRING035, 11)
Goto LABEL001
:LABEL020
TIME006 = Time()
INT011 = Dow(Date())
BIGSTR001 = ReadLine(PPEPath() + "page.tim", INT011 + 1)
Tokenize BIGSTR001
STRING038 = Strip(GetToken(), "-")
While (STRING038 <> "") Do
STRING039 = Left(STRING038, 5) + ":00"
STRING040 = Right(STRING038, 5) + ":00"
TIME004 = ToTime(STRING039)
TIME005 = ToTime(STRING040)
If ((TIME006 >= TIME004) && (TIME006 <= TIME005)) Then
BOOLEAN009 = 1
Return
Endif
STRING038 = GetToken()
EndWhile
BOOLEAN009 = 0
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 4 End
; 1 Cls
; 2 Wait
; 91 Goto
; 129 Let
; 19 Print
; 4 PrintLn
; 64 If
; 3 DispFile
; 1 FOpen
; 1 FAppend
; 1 FClose
; 1 FPutLn
; 1 ResetDisp
; 1 GetUser
; 3 DefColor
; 1 Log
; 1 InputStr
; 24 Gosub
; 11 Return
; 3 Delay
; 3 Inc
; 1 Dec
; 3 Newline
; 6 Tokenize
; 2 InputText
; 1 KbdStuff
; 7 AnsiPos
; 1 Backup
; 1 Forward
; 4 FreshLine
; 1 Sound
; 1 Chat
; 2 SPrint
; 1 SPrintLn
; 3 PageOn
; 1 PageOff
; 1 FSeek
; 1 FRead
; 1 Redim
;
;
; ■ Functions used :
;
; 1 -
; 55 +
; 4 -
; 31 ==
; 4 <>
; 6 <
; 6 <=
; 4 >
; 10 >=
; 58 !
; 14 &&
; 9 ||
; 11 Upper()
; 2 Left()
; 1 Right()
; 8 Chr()
; 2 Abort()
; 4 Random()
; 1 Date()
; 8 Time()
; 1 U_Name()
; 1 Dow()
; 7 StripAtx()
; 2 Strip()
; 1 Inkey()
; 11 String()
; 1 Mask_Ascii()
; 3 PCBDat()
; 10 PPEPath()
; 1 PcbNode()
; 28 ReadLine()
; 16 GetToken()
; 2 Exist()
; 1 TokenStr()
; 3 LangExt()
; 5 GetX()
; 5 GetY()
; 1 FileInf()
; 1 KInkey()
; 4 LoggedOn()
; 1 TokCount()
; 1 PageStat()
; 1 ReplaceStr()
; 2 ToTime()
;
;------------------------------------------------------------------------------
;
; Analysis flags : d
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 4 For/Next
; 3 While/EndWhile
; 34 If/Then or If/Then/Else
; 2 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------